#include "iwdg.h"

IWDG_HandleTypeDef IWDG_Handler; // 独立看门狗句柄

/***************************
* 函数名： IWDG_Init
* 功能：独立看门狗初始化函数
* 输入：无
* 输出：无
* 独立看门狗溢出时间(ms)：Tout = (4*2^pre) / 40 * rlr
*  其中：pre是预分频系数（0~6），(4*2^pre)相当于Prescaler变量,
*        rlr是重装载寄存器值(12位），40是独立看门狗时钟（40KHz）
* 注：IWDG一旦启用，就不能再被关闭，
* 只能重启才能关闭，而且重启后
* 不能打开IWDG，否则问题依旧
*/
void IWDG_Init(u8 pre,u16 rlr)
{
	IWDG_Handler.Instance = IWDG;
	IWDG_Handler.Init.Prescaler = pre;			// 设置IWDG分频系数
	IWDG_Handler.Init.Reload = rlr;					// 重装载值
	HAL_IWDG_Init(&IWDG_Handler);						// 初始化IWDG
}

// 喂狗
void IWDG_FeedDog(void)
{
	HAL_IWDG_Refresh(&IWDG_Handler);				// 喂狗
}